CouchDB Security এবং Authentication

Database Tutorials - কাউচডিবি (CouchDB)
217
217

CouchDB একটি ডিস্ট্রিবিউটেড ডকুমেন্ট-ভিত্তিক NoSQL ডাটাবেস সিস্টেম যা সুরক্ষা এবং প্রমাণীকরণের জন্য একটি শক্তিশালী ব্যবস্থা প্রদান করে। CouchDB-তে সিকিউরিটি ব্যবস্থাপনা এমনভাবে ডিজাইন করা হয়েছে যাতে ডেটাবেস এবং ডকুমেন্টের অ্যাক্সেস সঠিকভাবে নিয়ন্ত্রণ করা যায় এবং বিভিন্ন ব্যবহারকারীর জন্য নিরাপদ প্রবেশাধিকার নিশ্চিত করা যায়।

CouchDB-এর সুরক্ষা ব্যবস্থা নিচের প্রধান অংশে বিভক্ত:


1. Authentication (প্রমাণীকরণ)

Authentication হল প্রক্রিয়া যার মাধ্যমে ব্যবহারকারীরা তাদের পরিচয় যাচাই করে যাতে তারা ডেটাবেসে অ্যাক্সেস পেতে পারে। CouchDB দুটি প্রধান পদ্ধতি দ্বারা প্রমাণীকরণ পরিচালনা করে:

a. Cookie-based Authentication

  • Cookie-based Authentication হল CouchDB-তে প্রমাণীকরণের একটি পদ্ধতি যেখানে ব্যবহারকারীরা লগইন করে একটি সেশন কুকি পান যা তাদের পরিচয় প্রমাণিত করে।
  • এই পদ্ধতিতে, ব্যবহারকারী যখন লগইন করে, CouchDB একটি কুকি (উদাহরণস্বরূপ, AuthSession) তৈরি করে, যা পরবর্তী রিকুয়েস্টগুলিতে অন্তর্ভুক্ত করা হয়।
  • যখন ক্লায়েন্ট কুকি ব্যবহার করে ডেটাবেসে প্রবেশ করতে চায়, তখন CouchDB কুকি যাচাই করে ব্যবহারকারীর বৈধতা নিশ্চিত করে।

লগইন উদাহরণ:

curl -X POST http://127.0.0.1:5984/_session -d '{"name": "admin", "password": "password"}'

এটি যদি সফল হয়, তাহলে একটি কুকি তৈরি হবে, যা পরবর্তী রিকুয়েস্টে ব্যবহার করা যাবে।

b. Token-based Authentication

  • Token-based Authentication CouchDB-এর জন্য আরও উন্নত নিরাপত্তা ব্যবস্থা, যেখানে ব্যবহারকারীরা Bearer Token ব্যবহার করে প্রমাণীকরণ করতে পারে।
  • এই পদ্ধতিতে, ব্যবহারকারীদের একটি authentication token প্রদান করা হয় যা পরে অ্যাক্সেস রিকুয়েস্টে অন্তর্ভুক্ত করা হয়।

টোকেন জেনারেশন উদাহরণ:

curl -X POST http://127.0.0.1:5984/_session -d '{"name": "admin", "password": "password"}'

এটি একটি টোকেন তৈরি করবে, যা পরবর্তী রিকুয়েস্টে ব্যবহার করা যেতে পারে।


2. Authorization (অধিকার নির্ধারণ)

Authorization হল সেই প্রক্রিয়া যার মাধ্যমে নির্ধারণ করা হয় ব্যবহারকারী কোন ডেটাবেস এবং ডকুমেন্টগুলিতে অ্যাক্সেস পেতে পারেন। CouchDB Role-based Access Control (RBAC) ব্যবস্থাপনা ব্যবহার করে যা ব্যবহারকারীদের নির্দিষ্ট roles বা অধিকার প্রদান করে।

a. User and Role Management

  • CouchDB-তে ব্যবহারকারীদের role প্রদান করা হয়, যা তাদের কনটেন্ট এবং ডেটাবেসে কী ধরনের অ্যাক্সেস থাকবে তা নিয়ন্ত্রণ করে।
  • ব্যবহারকারী একটি বা একাধিক role পেতে পারে, যেমন admin, reader, বা writer
  • Admin রোলের ব্যবহারকারীদের সম্পূর্ণ ডেটাবেস পরিচালনার অধিকার থাকে, যেখানে reader বা writer রোলের ব্যবহারকারীদের নির্দিষ্ট অ্যাক্সেস সীমিত থাকে।

উদাহরণ: ব্যবহারকারী তৈরি এবং রোল অ্যাসাইনমেন্ট:

curl -X PUT http://127.0.0.1:5984/_users/org.couchdb.user:john_doe -d '{
   "name": "john_doe",
   "password": "securepassword",
   "roles": ["reader"],
   "type": "user"
}'

এটি ব্যবহারকারী john_doe তৈরি করবে এবং তাকে reader রোল প্রদান করবে।

b. Database-level Permissions

  • CouchDB-এর _security ফিচারের মাধ্যমে ডেটাবেস স্তরের অ্যাক্সেস কন্ট্রোল নির্ধারণ করা যেতে পারে।
  • আপনি admin এবং reader হিসেবে পৃথক অ্যাক্সেস কন্ট্রোল সেট করতে পারেন।

উদাহরণ:

curl -X PUT http://127.0.0.1:5984/mydatabase/_security -d '{
   "admins": {"names": ["admin_user"], "roles": []},
   "readers": {"names": ["john_doe"], "roles": []}
}'

এটি mydatabase ডেটাবেসের জন্য admin_user কে অ্যাডমিন এবং john_doe কে রিডার অ্যাক্সেস প্রদান করবে।


3. SSL/TLS Encryption

CouchDB SSL/TLS সমর্থন করে, যা ডেটা ট্রান্সমিশন নিরাপদ করতে সহায়ক। আপনি আপনার CouchDB সার্ভারে SSL সেটআপ করে ডেটা এনক্রিপ্ট করে নিরাপদ যোগাযোগ প্রতিষ্ঠা করতে পারেন।

SSL সনদ সংস্থান এবং কনফিগারেশন

CouchDB-তে SSL সেটআপ করতে হলে, আপনাকে CouchDB সার্ভারে একটি SSL সনদ ইনস্টল করতে হবে এবং কনফিগারেশন ফাইল (local.ini) পরিবর্তন করতে হবে।

উদাহরণ (CouchDB কনফিগারেশন):

[couch_httpd_ssl]
enabled = true
cert_file = /path/to/certificate.pem
key_file = /path/to/private_key.pem

এটি SSL সক্রিয় করবে এবং নির্দিষ্ট সনদ এবং কী ফাইল ব্যবহার করে সুরক্ষিত সংযোগ তৈরি করবে।


4. Audit Logs and Security Best Practices

CouchDB-এর Audit Logs ব্যবস্থাপনা সাহায্য করে নিরাপত্তা সংক্রান্ত ঘটনা ট্র্যাক করতে। এটি সিস্টেমের নিরাপত্তা আরও শক্তিশালী করতে সহায়ক। এর মাধ্যমে আপনি সার্ভারে যেকোনো পরিবর্তন, যেমন লগইন চেষ্টা, ডেটাবেস অ্যাক্সেস, এবং সিস্টেমের অন্যান্য কার্যকলাপ ট্র্যাক করতে পারবেন।

Security Best Practices

  • Strong Passwords: ব্যবহারকারীদের জন্য শক্তিশালী পাসওয়ার্ড ব্যবহার করা উচিত।
  • Role-based Access Control: ব্যবহারকারীদের নির্দিষ্ট রোল প্রদান এবং অ্যাক্সেস সীমিত করা উচিত।
  • SSL Encryption: ডেটাবেস এবং ক্লায়েন্টের মধ্যে ট্রান্সমিশন এনক্রিপ্ট করা উচিত।
  • Regular Backup: ডেটার নিয়মিত ব্যাকআপ রাখা উচিত যাতে নিরাপত্তা সংক্রান্ত কোনও সমস্যা হলে তা দ্রুত মেরামত করা যায়।

সারসংক্ষেপ

CouchDB Security এবং Authentication এর মাধ্যমে ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা নিশ্চিত করা যায়। CouchDB প্রমাণীকরণ ব্যবস্থায় cookie-based এবং token-based authentication ব্যবহৃত হয়। Role-based access control (RBAC) এর মাধ্যমে আপনি ব্যবহারকারীদের নির্দিষ্ট ডেটাবেস এবং ডকুমেন্ট অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন। এছাড়া SSL/TLS encryption ট্রান্সমিশন সুরক্ষিত করার জন্য সহায়ক। নিরাপত্তা সঠিকভাবে ব্যবস্থাপনা করলে, CouchDB একটি নিরাপদ এবং স্কেলেবল ডাটাবেস হিসেবে ব্যবহৃত হতে পারে।

common.content_added_by

CouchDB এর Built-in Security Features

236
236

CouchDB একটি শক্তিশালী এবং স্কেলেবল ডাটাবেস সিস্টেম, যা উচ্চ স্তরের নিরাপত্তা বৈশিষ্ট্য সরবরাহ করে। CouchDB-এর Built-in Security Features ব্যবহারকারীদের ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা নিশ্চিত করতে সাহায্য করে। এই সিকিউরিটি বৈশিষ্ট্যগুলির মধ্যে রয়েছে Authentication, Authorization, SSL Encryption, Role-based Access Control (RBAC), এবং Audit Logging। নিচে বিস্তারিত আলোচনা করা হলো:


1. Authentication (প্রমাণীকরণ)

Authentication হল সেই প্রক্রিয়া যেখানে CouchDB ব্যবহারকারীকে শনাক্ত করার জন্য একটি username এবং password সংগ্রহ করে। CouchDB প্রমাণীকরণ সিস্টেম দুটি প্রধান পদ্ধতির মাধ্যমে কাজ করতে পারে:

a. Basic Authentication:

  • CouchDB Basic Authentication সমর্থন করে, যা username এবং password ব্যবহার করে প্রমাণীকরণ সম্পন্ন করে।
  • ক্লায়েন্টরা HTTP রিকুয়েস্টে Authorization হেডারে Base64-encoded credentials পাঠায়।

b. Cookie-based Authentication:

  • CouchDB cookie-based authentication সমর্থন করে, যেখানে প্রথমে ব্যবহারকারী লগইন করলে একটি session cookie প্রদান করা হয়।
  • এই session cookie দিয়ে ব্যবহারকারী পরবর্তী রিকুয়েস্টে প্রমাণীকৃত হিসেবে পরিচিত হন।

c. Token-based Authentication:

  • CouchDB token-based authentication সমর্থন করে, যার মাধ্যমে ব্যবহারকারী JWT (JSON Web Tokens) ব্যবহার করে প্রমাণীকরণ সম্পন্ন করতে পারেন।
  • এটি ক্লায়েন্ট অ্যাপ্লিকেশন এবং CouchDB সার্ভারের মধ্যে নিরাপদ যোগাযোগ নিশ্চিত করে।

2. Authorization (অধিকার প্রদান)

CouchDB তে Authorization ব্যবস্থা ব্যবহৃত হয়, যা প্রমাণীকৃত ব্যবহারকারীদের নির্দিষ্ট রিসোর্সে অ্যাক্সেস নিয়ন্ত্রণ করে। এটি Role-based Access Control (RBAC) এর মাধ্যমে পরিচালিত হয়, যার সাহায্যে ব্যবহারকারীকে বিভিন্ন role নির্ধারণ করা হয়।

Role-based Access Control (RBAC):

  • CouchDB ব্যবহারকারীদের roles প্রদান করে, যা তাদের অ্যাক্সেসের স্তর নির্ধারণ করে।
  • প্রতিটি রোলের জন্য read, write, admin এর মতো বিভিন্ন অধিকার নির্ধারণ করা যায়।
  • Admin roles কেবলমাত্র ডেটাবেসের কনফিগারেশন এবং নিরাপত্তা সেটিংস পরিবর্তন করতে পারে।

উদাহরণ:

  • একজন ব্যবহারকারী শুধুমাত্র ডকুমেন্ট পড়তে (read-only) পারেন, কিন্তু লিখতে বা মুছে ফেলতে পারবেন না।
  • অন্য একজন ব্যবহারকারী ডকুমেন্ট তৈরি, আপডেট এবং মুছে ফেলতে পারবেন, কিন্তু ডাটাবেস কনফিগারেশন পরিবর্তন করতে পারবেন না।

ফিচার:

  • CouchDB _users ডেটাবেসে ব্যবহারকারীদের তথ্য সংরক্ষণ করে, যেখানে roles এবং password hashes সংরক্ষিত থাকে।
  • _security ডকুমেন্টে ডেটাবেসের নিরাপত্তা সেটিংস সংরক্ষণ করা হয়, যেখানে ডেটাবেসের জন্য নির্দিষ্ট read এবং write অধিকার প্রদান করা যায়।

3. SSL/TLS Encryption (নিরাপদ যোগাযোগ)

CouchDB SSL/TLS এনক্রিপশন সাপোর্ট করে, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা স্থানান্তরকে নিরাপদ করে তোলে। SSL/TLS ব্যবহার করলে ডেটা ট্রান্সমিশন নিরাপদ থাকে এবং Man-in-the-Middle আক্রমণ থেকে সুরক্ষিত থাকে।

ফিচার:

  • HTTPS এর মাধ্যমে CouchDB ক্লায়েন্ট এবং সার্ভারের মধ্যে সমস্ত যোগাযোগ এনক্রিপ্ট করা যায়।
  • এটি নিশ্চিত করে যে ডেটা এন্টারনেটের মাধ্যমে ট্রান্সফার করার সময় অপরাধীদের দ্বারা চুরি হওয়ার ঝুঁকি কমে যায়।

4. CORS (Cross-Origin Resource Sharing)

CouchDB CORS (Cross-Origin Resource Sharing) সমর্থন করে, যার মাধ্যমে অন্যান্য ডোমেইন বা সার্ভার থেকে CouchDB তে অ্যাক্সেস নিয়ন্ত্রণ করা যায়। CORS ব্যবহার করে আপনি কীভাবে এবং কোন সার্ভারগুলি আপনার CouchDB ডেটাবেসে অ্যাক্সেস পাবে তা নির্ধারণ করতে পারেন।

ফিচার:

  • CORS ব্যবহারের মাধ্যমে নির্দিষ্ট হোস্ট বা ডোমেইন থেকে অ্যাক্সেস সীমাবদ্ধ করা যায়।
  • এটি CouchDB-এর নিরাপত্তা বাড়াতে সহায়ক, কারণ তা অপ্রত্যাশিত বা ক্ষতিকর ডোমেইনগুলো থেকে অ্যাক্সেস রোধ করে।

5. Audit Logging (অডিট লগিং)

CouchDB Audit Logs সরবরাহ করে, যা সিস্টেমে হওয়া সব কার্যক্রমের একটি বিস্তারিত রেকর্ড রাখে। এটি নিরাপত্তা পর্যবেক্ষণ এবং ডেটাবেস অ্যাক্সেসের ইতিহাস ট্র্যাক করার জন্য অত্যন্ত গুরুত্বপূর্ণ।

ফিচার:

  • অডিট লগগুলো read এবং write অপারেশন সহ সিস্টেমের অন্যান্য কার্যক্রম লিপিবদ্ধ করে।
  • এগুলি ব্যবহারকারীর কার্যকলাপ এবং সিস্টেমের সার্বিক নিরাপত্তা নজরদারির জন্য উপযোগী।

6. Database-Level Security (ডাটাবেস স্তরের নিরাপত্তা)

CouchDB প্রতিটি ডেটাবেসের জন্য নিরাপত্তা কনফিগারেশন প্রদান করে। _security ডকুমেন্টের মাধ্যমে আপনি ডেটাবেসে অ্যাক্সেস এবং অনুমতি নিয়ন্ত্রণ করতে পারেন। আপনি read এবং write অধিকার দিতে বা নির্ধারিত করতে পারেন, যা ডেটাবেস এবং ডকুমেন্টের উপর এক্সেস নিয়ন্ত্রণ করতে সাহায্য করে।

ফিচার:

  • CouchDB ডেটাবেসের security ডকুমেন্টে admins, readers, এবং writers এর ভূমিকা নির্ধারণ করা যায়।
  • এই সেটিংস ডেটাবেসের কনফিগারেশন নিয়ন্ত্রণ করতে এবং নির্দিষ্ট ব্যবহারকারীদের কাছে ডেটা অ্যাক্সেস সীমিত করতে সহায়ক।

সারাংশ

CouchDB এর Built-in Security Features ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা সুনিশ্চিত করতে বিভিন্ন কার্যকরী বৈশিষ্ট্য সরবরাহ করে। এগুলির মধ্যে রয়েছে:

  • Authentication এবং Authorization এর মাধ্যমে প্রমাণীকরণ এবং অধিকার প্রদান
  • SSL/TLS encryption নিরাপদ যোগাযোগ নিশ্চিত করে
  • CORS দ্বারা ডোমেইন-বেসড অ্যাক্সেস নিয়ন্ত্রণ
  • Audit Logging যা সমস্ত কার্যকলাপ ট্র্যাক করে
  • Database-level security যা ডেটাবেসে অ্যাক্সেস এবং অনুমতি নিয়ন্ত্রণ করে

এই নিরাপত্তা বৈশিষ্ট্যগুলি CouchDB কে ডেটাবেস পরিচালনার জন্য একটি শক্তিশালী এবং নিরাপদ সমাধান করে তোলে, যা বিশেষভাবে ব্যবহারকারীদের নিরাপত্তা এবং ডেটা সুরক্ষা নিশ্চিত করে।

common.content_added_by

Authentication মেথড (Cookie-based, Token-based)

232
232

CouchDB নিরাপত্তার জন্য দুটি প্রধান Authentication পদ্ধতি ব্যবহার করে: Cookie-based Authentication এবং Token-based Authentication। এই দুটি পদ্ধতি ব্যবহারকারীকে তাদের অ্যাক্সেস প্রদান করে, কিন্তু তাদের কাজ করার পদ্ধতি এবং নিরাপত্তার ব্যবস্থাপনা আলাদা। নিচে এই দুটি পদ্ধতির বিস্তারিত আলোচনা করা হলো:


1. Cookie-based Authentication

Cookie-based Authentication একটি ক্লায়েন্ট-সার্ভার ভিত্তিক প্রক্রিয়া, যেখানে সার্ভার একটি cookie তৈরি করে এবং ক্লায়েন্টকে তা প্রদান করে। ক্লায়েন্ট তার পরবর্তী অনুরোধে সেই cookie ব্যবহার করে সার্ভারের কাছে অ্যাক্সেস প্রমাণিত করে।

কাজ করার পদ্ধতি:

  1. লগইন রিকুয়েস্ট: ব্যবহারকারী যখন প্রথমবার লগইন করেন, তখন একটি POST রিকুয়েস্ট পাঠানো হয়, যেখানে ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রেরণ করা হয়।
  2. সার্ভার কর্তৃক প্রমাণীকরণ: সার্ভার ব্যবহারকারীর নাম এবং পাসওয়ার্ড যাচাই করে, এবং যদি প্রমাণীকরণ সফল হয়, তাহলে এটি একটি cookie তৈরি করে এবং ব্যবহারকারীকে প্রদান করে।
  3. ক্লায়েন্টের রিকুয়েস্ট: পরবর্তী যে কোনো রিকুয়েস্টে, ক্লায়েন্ট সেই cookie সহ প্রমাণীকৃত রিকুয়েস্ট পাঠায়।
  4. সার্ভারের রেসপন্স: সার্ভার cookie যাচাই করে এবং প্রমাণীকৃত হলে ডেটা প্রদান করে।

উদাহরণ:

  • লগইন রিকুয়েস্ট:
curl -X POST http://127.0.0.1:5984/_session -H "Content-Type: application/json" -d '{
  "name": "admin",
  "password": "admin_password"
}'

এটি একটি cookie ফিরিয়ে দেবে, যা পরবর্তী রিকুয়েস্টে ব্যবহার করতে হবে।

  • ক্লায়েন্টের রিকুয়েস্ট (cookie সহ):
curl -X GET http://127.0.0.1:5984/mydatabase -b cookies.txt

এখানে, cookies.txt ফাইলে প্রাপ্ত cookie সংরক্ষিত থাকবে, যা সার্ভার যাচাই করে প্রমাণীকৃত রিকুয়েস্ট হিসেবে গ্রহণ করবে।


2. Token-based Authentication

Token-based Authentication ব্যবহারকারীর প্রমাণীকরণের জন্য একটি JWT (JSON Web Token) বা অন্য ধরনের টোকেন ব্যবহার করে। এই পদ্ধতিতে, ব্যবহারকারী একবার লগইন করলে, সার্ভার তাকে একটি Token প্রদান করে এবং সেটি পরবর্তী অনুরোধে ব্যবহার করা হয়। টোকেন সাধারণত নির্দিষ্ট সময়ের জন্য বৈধ থাকে এবং সময়সীমা শেষ হলে আবার নতুন টোকেন সংগ্রহ করতে হয়।

কাজ করার পদ্ধতি:

  1. লগইন রিকুয়েস্ট: ব্যবহারকারী যখন প্রথমবার লগইন করেন, তখন একটি POST রিকুয়েস্ট পাঠানো হয়, যেখানে ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রেরণ করা হয়।
  2. সার্ভার কর্তৃক প্রমাণীকরণ: সার্ভার ব্যবহারকারীর নাম এবং পাসওয়ার্ড যাচাই করে এবং যদি প্রমাণীকরণ সফল হয়, তাহলে এটি একটি JWT বা Token তৈরি করে এবং ব্যবহারকারীকে প্রদান করে।
  3. ক্লায়েন্টের রিকুয়েস্ট: পরবর্তী যে কোনো রিকুয়েস্টে, ক্লায়েন্ট সেই টোকেন সহ প্রমাণীকৃত রিকুয়েস্ট পাঠায়।
  4. সার্ভারের রেসপন্স: সার্ভার টোকেন যাচাই করে এবং প্রমাণীকৃত হলে ডেটা প্রদান করে।

উদাহরণ:

  • লগইন রিকুয়েস্ট (Token প্রাপ্তি):
curl -X POST http://127.0.0.1:5984/_session -H "Content-Type: application/json" -d '{
  "name": "admin",
  "password": "admin_password"
}'

এটি JWT বা Token প্রদান করবে, যা পরবর্তী অনুরোধে ব্যবহার করতে হবে।

  • ক্লায়েন্টের রিকুয়েস্ট (Token সহ):
curl -X GET http://127.0.0.1:5984/mydatabase -H "Authorization: Bearer <token>"

এখানে, <token> এর স্থানে প্রাপ্ত JWT বা Token ব্যবহার করতে হবে।


প্রধান পার্থক্য

বৈশিষ্ট্যCookie-based AuthenticationToken-based Authentication
প্রমাণীকরণের পদ্ধতিব্যবহারকারী প্রথম লগইন করলে একটি cookie প্রদান করা হয়।প্রথম লগইনে টোকেন (যেমন JWT) প্রদান করা হয়।
অ্যাক্সেস মেথডপরবর্তী রিকুয়েস্টে cookie ব্যবহার করা হয়।পরবর্তী রিকুয়েস্টে token হেডারে পাঠানো হয়।
লগিন এবং টোকেনসার্ভারকে প্রতিটি রিকুয়েস্টে cookie পাঠাতে হয়।সার্ভারকে প্রতিটি রিকুয়েস্টে token পাঠাতে হয়।
টোকেনের সময়সীমাসাধারণত cookie একটি নির্দিষ্ট সময়ের জন্য বৈধ থাকে।টোকেনের একটি নির্দিষ্ট সময়সীমা থাকে (যেমন ১ ঘণ্টা)।
নিরাপত্তানিরাপত্তা cookie চুরি হওয়ার সম্ভাবনা থাকতে পারে।টোকেন চুরি হলে, তা দীর্ঘ সময় অবৈধভাবে ব্যবহার করা যেতে পারে।

সারসংক্ষেপ

  • Cookie-based Authentication সহজ এবং কার্যকর, কিন্তু কিছু নিরাপত্তা ঝুঁকি থাকতে পারে, যেমন cookie theft
  • Token-based Authentication উন্নত নিরাপত্তা প্রদান করে এবং মোবাইল এবং ডিসট্রিবিউটেড অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত, কারণ এতে একাধিক প্ল্যাটফর্মে stateless যোগাযোগ সম্ভব।
common.content_added_by

User Management এবং Role-based Access Control (RBAC)

207
207

CouchDB একটি ওপেন সোর্স NoSQL ডাটাবেস যা ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা এবং অ্যাক্সেস নিয়ন্ত্রণের জন্য User Management এবং Role-based Access Control (RBAC) ব্যবস্থাপনা সমর্থন করে। এই ব্যবস্থাগুলি CouchDB এর ব্যবহারকারীদের এবং তাদের অ্যাক্সেসের জন্য শক্তিশালী নিয়ন্ত্রণ প্রদান করে।


1. User Management in CouchDB

CouchDB-তে User Management পদ্ধতি ব্যবহারকারীদের তৈরি, আপডেট, মুছে ফেলা এবং তাদের তথ্য পরিচালনা করার সুযোগ দেয়। CouchDB তে ব্যবহারকারীদের admin এবং regular users হিসেবে শ্রেণিবদ্ধ করা হয়।

ব্যবহারকারীদের তৈরি এবং পরিচালনা:

CouchDB-তে ব্যবহারকারী তৈরি করার জন্য HTTP API ব্যবহার করা হয়। এই API-র মাধ্যমে নতুন ব্যবহারকারী তৈরি করা যায় এবং তাদের জন্য পাসওয়ার্ড এবং ভূমিকা (roles) নির্ধারণ করা যায়।

ব্যবহারকারী তৈরি করা:

নতুন ব্যবহারকারী তৈরি করতে হলে _users ডাটাবেসে POST রিকুয়েস্ট পাঠানো হয়। নতুন ব্যবহারকারী তৈরি করার সময় তাদের username, password, এবং roles (যদি থাকে) প্রদান করতে হবে।

HTTP Request:

POST /_users/org.couchdb.user:username

Request Body (JSON):

{
  "_id": "org.couchdb.user:john_doe",
  "name": "john_doe",
  "password": "securepassword",
  "roles": ["admin", "editor"]
}

Response:

যদি সফল হয়, একটি JSON অবজেক্ট রিটার্ন হবে যা ব্যবহারকারী তৈরি হওয়ার প্রমাণ হবে:

{
  "ok": true,
  "id": "org.couchdb.user:john_doe",
  "rev": "1-xxx"
}

2. Role-based Access Control (RBAC)

Role-based Access Control (RBAC) একটি নিরাপত্তা কৌশল যা ব্যবহারকারীদের তাদের ভূমিকা (roles) অনুযায়ী বিভিন্ন অ্যাক্সেস প্রদান করে। CouchDB-তে, ব্যবহারকারীরা বিভিন্ন roles এর অধীনে কাজ করতে পারে, যা তাদের বিভিন্ন ডেটাবেসে এবং ডকুমেন্টে কী ধরনের অ্যাক্সেস থাকবে তা নির্ধারণ করে।

Roles:

  • admin: Admins বা অ্যাডমিন ব্যবহারকারীরা ডেটাবেসের সমস্ত কার্যকলাপে অ্যাক্সেস এবং সম্পূর্ণ নিয়ন্ত্রণ রাখে, যেমন ডেটাবেস তৈরি, ডিলিট, এবং অন্যান্য নিরাপত্তা সেটিংস পরিবর্তন।
  • editor: Editors সাধারণত ডেটাবেসে ডকুমেন্ট তৈরি, পড়া এবং আপডেট করতে পারে, কিন্তু তারা ডেটাবেসের নিরাপত্তা বা অ্যাক্সেস নিয়ন্ত্রণ পরিবর্তন করতে পারে না।
  • reader: Readers শুধুমাত্র ডকুমেন্ট পড়তে পারে, কিন্তু তারা ডেটাবেসে কিছু পরিবর্তন করতে পারে না।

RBAC কনফিগারেশন:

  1. Admin Role:
    • Admins-দের পুরো CouchDB সিস্টেম এবং সমস্ত ডেটাবেসে পূর্ণ অ্যাক্সেস থাকবে।
  2. Custom Roles:
    • কাস্টম ভূমিকা তৈরি করে নির্দিষ্ট ডেটাবেস বা ডকুমেন্টের উপর অ্যাক্সেস নিয়ন্ত্রণ করা যায়।

নির্দিষ্ট ডেটাবেসে Role-Based Permissions:

CouchDB-তে ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা পরিচালনার জন্য security object ব্যবহার করা হয়। আপনি একটি ডেটাবেসের _security ডকুমেন্টে readers এবং writers ভূমিকা নির্ধারণ করতে পারেন।

HTTP Request:

GET /my_database/_security

Request Body (Security Object):

{
  "admins": {
    "names": ["admin_user"],
    "roles": ["admin"]
  },
  "readers": {
    "names": ["john_doe"],
    "roles": ["reader"]
  },
  "writers": {
    "names": ["john_doe"],
    "roles": ["editor"]
  }
}

এখানে:

  • admins: অ্যাডমিনদের নাম এবং ভূমিকা প্রদান করা হয়েছে।
  • readers: যারা শুধুমাত্র ডকুমেন্ট পড়তে পারবে।
  • writers: যারা ডকুমেন্ট লিখতে এবং আপডেট করতে পারবে।

Response:

{
  "admins": {
    "names": ["admin_user"],
    "roles": ["admin"]
  },
  "readers": {
    "names": ["john_doe"],
    "roles": ["reader"]
  },
  "writers": {
    "names": ["john_doe"],
    "roles": ["editor"]
  }
}

3. Admin Functions vs Regular Users

  • Admins: CouchDB এর admin ব্যবহারকারীরা সমস্ত সিস্টেম কার্যক্রম পরিচালনা করতে সক্ষম, যেমন ডেটাবেস তৈরি করা, সিস্টেম কনফিগারেশন পরিবর্তন করা এবং অন্যান্য নিরাপত্তা কার্যক্রম।
  • Regular Users: সাধারণ ব্যবহারকারীরা শুধুমাত্র তাদের জন্য নির্ধারিত ভূমিকা অনুযায়ী ডেটাবেসে অ্যাক্সেস পাবে। তারা admins দ্বারা অনুমোদিত না হলে, ডেটাবেস এবং ডকুমেন্টে অ্যাক্সেস পরিবর্তন বা সুরক্ষা সেটিংস পরিবর্তন করতে পারবে না।

4. Security Best Practices

  1. Secure Passwords:
    • ব্যবহারকারীদের শক্তিশালী পাসওয়ার্ড ব্যবহার নিশ্চিত করা উচিত। CouchDB তে পাসওয়ার্ড hashed আকারে সংরক্ষিত হয়।
  2. Limit Access:
    • সর্বদা readers এবং writers ভূমিকা নির্ধারণ করুন যাতে ব্যবহারকারীরা শুধুমাত্র তাদের প্রয়োজনীয় অ্যাক্সেস পায়।
  3. Use Admins Sparingly:
    • Admins ভূমিকা খুব কম ব্যবহারকারীর কাছে প্রদান করুন এবং তাদের অ্যাক্সেস সীমাবদ্ধ রাখুন।
  4. Encrypt Communications:
    • CouchDB সার্ভারের সাথে SSL/TLS encryption ব্যবহার করুন যাতে ডেটা সুরক্ষিত থাকে।

সারাংশ

User Management এবং Role-based Access Control (RBAC) CouchDB এর নিরাপত্তা ব্যবস্থার অন্যতম গুরুত্বপূর্ণ অংশ। এটি ব্যবহারকারীদের ভূমিকা এবং অ্যাক্সেস নিয়ন্ত্রণ করতে সাহায্য করে, যা ডেটাবেসের নিরাপত্তা বজায় রাখে এবং অনুমোদিত ব্যবহারকারীদের প্রয়োজনীয় অ্যাক্সেস দেয়। CouchDB তে admins এবং regular users ভূমিকা অনুযায়ী বিভিন্ন readers, writers এবং admins নির্ধারণ করে ডেটাবেসের অ্যাক্সেস নিয়ন্ত্রণ করা হয়।

common.content_added_by

CouchDB এর সঙ্গে SSL সেটআপ করা

208
208

CouchDB সার্ভারটির নিরাপত্তা বাড়ানোর জন্য SSL (Secure Socket Layer) বা TLS (Transport Layer Security) সেটআপ করা খুবই গুরুত্বপূর্ণ। SSL ব্যবহার করে আপনি সার্ভারের সাথে সংযুক্তির সময় ডেটা এনক্রিপ্ট করতে পারেন, যা ডেটার গোপনীয়তা ও নিরাপত্তা নিশ্চিত করে। নিচে CouchDB এর সঙ্গে SSL সেটআপ করার বিস্তারিত প্রক্রিয়া আলোচনা করা হলো।


1. SSL সার্টিফিকেট তৈরি করা

CouchDB এর সঙ্গে SSL সেটআপ করতে প্রথমে আপনাকে একটি SSL সার্টিফিকেট তৈরি করতে হবে। আপনি নিজে একটি Self-signed certificate তৈরি করতে পারেন অথবা একটি বিশ্বস্ত সার্টিফিকেট অথরিটি (CA) থেকে সার্টিফিকেট কিনতে পারেন।

a. Self-Signed SSL সার্টিফিকেট তৈরি করা

SSL সার্টিফিকেট তৈরি করতে OpenSSL ব্যবহার করা যেতে পারে। নিচের কমান্ডটি দিয়ে সার্টিফিকেট এবং প্রাইভেট কি তৈরি করা যাবে:

openssl req -new -x509 -days 365 -nodes -out /etc/couchdb/couchdb-cert.pem -keyout /etc/couchdb/couchdb-key.pem

এখানে:

  • /etc/couchdb/couchdb-cert.pem: সার্টিফিকেট ফাইল।
  • /etc/couchdb/couchdb-key.pem: প্রাইভেট কি ফাইল।

এটি ১ বছরের জন্য একটি Self-signed certificate তৈরি করবে। আপনি এই সার্টিফিকেট ফাইল দুটি CouchDB কনফিগারেশনে ব্যবহার করবেন।


2. CouchDB কনফিগারেশন ফাইল আপডেট করা

CouchDB এর কনফিগারেশন ফাইলটি local.ini এবং default.ini ফাইলের মধ্যে থাকে, যা সাধারণত /opt/couchdb/etc বা /etc/couchdb ডিরেক্টরিতে অবস্থান করে। SSL সেটআপ করার জন্য এই ফাইলগুলোতে কিছু পরিবর্তন করতে হবে।

a. local.ini ফাইলে SSL কনফিগারেশন

  1. CouchDB এর কনফিগারেশন ফাইলটি খুলুন:

    sudo nano /opt/couchdb/etc/local.ini
    
  2. [httpd] সেকশনটি খুঁজে বের করুন এবং SSL সেটিংস যোগ করুন:

    [httpd]
    enable_ssl = true
    ssl_cert_file = /etc/couchdb/couchdb-cert.pem
    ssl_key_file = /etc/couchdb/couchdb-key.pem
    ssl_version = tlsv1.2
    ssl_ciphers = HIGH:!aNULL:!MD5
    

    এখানে:

    • enable_ssl: SSL সক্রিয় করতে হবে। এটি true করতে হবে।
    • ssl_cert_file: SSL সার্টিফিকেট ফাইলের পথ।
    • ssl_key_file: প্রাইভেট কি ফাইলের পথ।
    • ssl_version: TLS সংস্করণ নির্ধারণ করুন (যেমন, TLSv1.2)।
    • ssl_ciphers: SSL সাইফারগুলি নির্ধারণ করুন যা সিকিউরিটি প্রদান করবে।

3. CouchDB সার্ভিস রিস্টার্ট করা

SSL কনফিগারেশন সম্পূর্ণ করার পর, CouchDB সার্ভিসটি পুনরায় রিস্টার্ট করতে হবে যাতে নতুন পরিবর্তনগুলি কার্যকর হয়।

sudo systemctl restart couchdb

অথবা, যদি আপনি service কমান্ড ব্যবহার করতে চান:

sudo service couchdb restart

4. SSL কনফিগারেশন পরীক্ষা করা

SSL কনফিগারেশন সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করতে, আপনি ব্রাউজারে CouchDB সার্ভার অ্যাক্সেস করতে পারেন HTTPS প্রোটোকলের মাধ্যমে। উদাহরণস্বরূপ:

https://your-server-ip:5984

এখানে:

  • your-server-ip: আপনার CouchDB সার্ভারের আইপি ঠিকানা।

এটি HTTPS প্রোটোকল দিয়ে সংযোগ স্থাপন করবে এবং যদি SSL সঠিকভাবে কনফিগার করা থাকে, তবে ব্রাউজারে নিরাপত্তা চিহ্ন প্রদর্শিত হবে।

b. SSL পরীক্ষা করতে CURL ব্যবহার করা

CURL কমান্ডের মাধ্যমে আপনি SSL সংযোগ পরীক্ষা করতে পারেন:

curl -X GET https://localhost:5984 -k

এখানে:

  • -k ফ্ল্যাগ ব্যবহার করলে SSL সার্টিফিকেটের ভ্যালিডিটি চেক করা হবে না, যা self-signed সার্টিফিকেটের জন্য উপযুক্ত।

5. তৃতীয় পক্ষের CA থেকে SSL সার্টিফিকেট ব্যবহার

যদি আপনি Self-signed certificate ব্যবহার না করতে চান এবং তৃতীয় পক্ষের CA থেকে একটি SSL সার্টিফিকেট ব্যবহার করতে চান, তবে আপনি সঠিক SSL সার্টিফিকেট এবং CA সার্টিফিকেট ইনস্টল করতে হবে। এই সার্টিফিকেটগুলি পাবেন সার্টিফিকেট অথরিটি (যেমন: Let's Encrypt, Comodo, Digicert) থেকে।

  1. CA সার্টিফিকেট ইনস্টল করুন এবং উপরের কনফিগারেশনে ssl_cert_file এবং ssl_key_file ফিল্ডগুলিতে সার্টিফিকেটের পথ নির্ধারণ করুন।
  2. CouchDB রিস্টার্ট করুন এবং নতুন সার্টিফিকেটের সাথে HTTPS সংযোগ পরীক্ষা করুন।

উপসংহার

CouchDB-তে SSL সেটআপ নিরাপদ HTTPS সংযোগ স্থাপন করার জন্য গুরুত্বপূর্ণ। এটি ডেটার গোপনীয়তা ও নিরাপত্তা সুনিশ্চিত করে, বিশেষ করে যখন ডেটাবেসটি পাবলিক নেটওয়ার্কে ব্যবহৃত হয়। Self-signed certificate বা CA সার্টিফিকেট ব্যবহার করে আপনি সহজেই SSL সংযোগ স্থাপন করতে পারেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion